﻿// 3537. 树查找.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


using namespace std;
/*
https://www.acwing.com/problem/content/3540/

给定一棵包含 n个结点（编号 1∼n）的完全二叉树的层序遍历序列，请按照从左到右的顺序输出该树第 k层的全部结点编号。

输入格式
第一行包含整数 n。

第二行包含 n个整数，表示该二叉树的层序遍历序列。

第三行包含整数 k。

输出格式
共一行，按照从左到右的顺序输出该树第 k层的全部结点编号。

数与数之间用单个空格隔开。

若无该层结点，则输出 EMPTY。

数据范围
1≤n≤1000
，
1≤k≤20
输入样例：
4
1 2 3 4
2
输出样例：
2 3
*/

int num[16] = {0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384};
int pre[16] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383 };

int n, k;
const int N = 1010;
int arr[N];

int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> arr[i];
	}
	cin >> k;

	int last = pre[k];
	int len = num[k];
	if (n < last - len + 1) { cout << "EMPTY" << endl; return 0; }
	for (int i = last - len + 1; i <= last; i++) {
		if (i > n) break;
		cout << arr[i] << " ";
	}

	return 0;
}
 